// Copyright Epic Games, Inc. All Rights Reserved.

#pragma once

#include "CoreMinimal.h"
#include "Modules/ModuleManager.h"

class FToolBarBuilder;
class FMenuBuilder;

class FEditorWindowModule : public IModuleInterface
{
public:

	/** IModuleInterface implementation */
	virtual void StartupModule() override;
	virtual void ShutdownModule() override;
	/** This function will be bound to Command (by default it will bring up plugin window) */
	void PluginButtonClicked();
	void AddMenuBarExtension(FMenuBarBuilder& Builder);
	void AddMenuExtension(FMenuBuilder& Builder);
	void AddToolBarExtension(FToolBarBuilder& Builder);
	void AddSubMenuExtension(FMenuBuilder& Builder);
	TSharedRef<SWidget> ToolBarCombox();
	TSharedRef<FExtender> LVCMExtender(const TSharedRef<FUICommandList> CommandList, const TArray<AActor*> Actors);
	TSharedRef<FExtender> ACMExtender(const TArray<FString>& Paths);
	TSharedRef<FExtender> AVCMExtender(const TArray<FAssetData>& AssetData);
private:

	void RegisterMenus();

	TSharedRef<class SDockTab> OnSpawnPluginTab(const class FSpawnTabArgs& SpawnTabArgs);

private:
	FSimpleMulticastDelegate ToolMenuRegister;
	TSharedPtr<class FUICommandList> PluginCommands;
};
